XML 스키마 (W3C)
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
XML 스키마(W3C)는 2001년 W3C 권고안으로 발표된 XML을 위한 스키마 언어이다. XML 스키마는 DTD, DDML, SOX, XML-Data, XDR 등 기존 기술을 참고하여 개발되었으며, 네임스페이스 인식 및 데이터 유형 기능을 제공한다. 스키마는 요소 및 속성 선언, 유형 정의 등으로 구성되며, 스키마 문서를 통해 생성된다. XML 스키마는 XML 문서의 유효성 검증, 코드 생성, 구조 문서화 등에 활용된다. 하지만 복잡성, 형식적 명세 부족, 표현력 및 기술적 제한 등의 비판을 받기도 한다. XSD 1.1은 2012년에 W3C 권고안이 되었으며, XPath 2.0 표현식 사용, 조건부 유형 할당 등의 기능을 추가했다.
더 읽어볼만한 페이지
- W3C 표준 - HTML
HTML은 웹 페이지 제작을 위한 표준 마크업 언어로서, 팀 버너스리가 제안하고 구현한 후 인터넷 발전과 함께 널리 사용되며, SGML에 기반하여 하이퍼텍스트 기능으로 다양한 콘텐츠를 표현하고 연결하며, W3C와 WHATWG에서 표준화를 진행하고 최신 버전은 HTML Living Standard이다. - W3C 표준 - 타임드 텍스트
타임드 텍스트는 영상이나 오디오 콘텐츠에 시간 정보를 담아 표현되는 텍스트로, 자막이나 캡션 등에 활용되며 TTML, WebVTT 등의 표준이 존재한다. - XML 기반 표준 - XAML
XAML은 마이크로소프트에서 개발한 XML 기반의 마크업 언어로, 사용자 인터페이스, 데이터 바인딩, 이벤트 처리 등을 정의하며 WPF, Silverlight, WF, WinRT API 앱, Xamarin.Forms 등에서 UI 개발에 널리 사용된다. - XML 기반 표준 - 아톰 (표준)
Atom은 웹 사이트 업데이트 정보와 콘텐츠 배포를 위한 XML 기반 문서 형식으로, Atom 배포 형식과 Atom 출판 프로토콜로 구성되어 있으며, RSS를 대체하기 위해 고안되었고 국제화 지원 및 모듈성에서 차이를 보인다.
XML 스키마 (W3C) - [IT 관련 정보]에 관한 문서 | |
---|---|
개요 | |
종류 | XML 스키마 언어 |
확장자 | .xsd |
MIME 형식 | application/xml, text/xml |
개발 | 월드 와이드 웹 컨소시엄 |
기반 | XML |
표준 | |
1.0, 파트 1 구조 (권고) | http://www.w3.org/TR/xmlschema-1/ |
1.0, 파트 2 자료형 (권고) | http://www.w3.org/TR/xmlschema-2/ |
1.1, 파트 1 구조 (권고) | http://www.w3.org/TR/xmlschema11-1/ |
1.1, 파트 2 자료형 (권고) | http://www.w3.org/TR/xmlschema11-2/ |
2. 역사
2001년 5월, W3C는 XML 스키마를 W3C 권고안으로 발표했는데,[2] 이는 XML에 대한 최초의 독립적인 스키마 언어였다. 초기에는 WXS (W3C XML Schema) 또는 XSD (XML Schema Definition)라는 용어가 혼용되었으나,[3][4] 버전 1.1부터 W3C는 XSD를 공식 명칭으로 채택했다.
스키마는 일련의 스키마 구성 요소로 구성된 메타데이터의 추상적인 모음으로, 주로 요소 및 속성 선언과 복합 및 단순 유형 정의로 구성된다. 이러한 구성 요소는 일반적으로 이러한 구성 요소의 소스 언어 정의를 포함하는 일련의 스키마 문서를 처리하여 생성된다. 그러나 일반적으로 스키마 문서를 스키마라고 부르기도 한다.
기술적으로, 스키마는 일련의 '''스키마 구성 요소'''로 구성된 메타데이터의 추상적인 모음이며, 주로 요소 및 속성 선언과 복합 및 단순 유형 정의로 구성된다. 이러한 구성 요소는 일반적으로 이러한 구성 요소의 소스 언어 정의를 포함하는 일련의 '''스키마 문서'''를 처리하여 생성된다. 그러나 일반적인 사용법에서 스키마 문서는 종종 스키마로 지칭된다.
XSD는 DTD, DDML, SOX, XML-Data, XDR 등 이전의 다양한 XML 스키마 관련 기술들을 참고하여 개발되었다. XDR과 SOX는 XML 스키마가 발표된 후에도 잠시 동안 사용되었다. 마이크로소프트는 2006년 12월 MSXML 6.0 버전까지 XDR을 지원했으며,[5] 커머스 원은 2004년 말 파산 전까지 SOX를 지원했다.
XML 스키마는 XML의 기본 DTD에서 사용할 수 없었던 네임스페이스 인식과 데이터 유형(정수, 날짜 등) 정의 기능을 제공한다.
XSD 1.0 규격은 2001년에 처음 발표되었고, 2004년에 오류 수정을 거쳐 두 번째 판이 발표되었다. 2012년 4월, XSD 1.1이 W3C 권고안으로 발표되었다.
3. 스키마와 스키마 문서
스키마 문서는 네임스페이스별로 구성된다. 명명된 모든 스키마 구성 요소는 대상 네임스페이스에 속하며, 대상 네임스페이스는 스키마 문서 전체의 속성이다. 스키마 문서는 동일한 네임스페이스에 대한 다른 스키마 문서를 ''포함''할 수 있으며, 다른 네임스페이스에 대한 스키마 문서를 ''가져올'' 수 있다.
인스턴스 문서가 스키마에 대해 유효성 검사를 수행할 때(이 과정을 ''평가''라고 함), 유효성 검사에 사용될 스키마는 유효성 검사 엔진에 매개변수로 제공되거나, `xsi:schemaLocation` 및 `xsi:noNamespaceSchemaLocation`이라는 두 개의 특수 속성을 사용하여 인스턴스 문서에서 직접 참조될 수 있다. ("xsi"는 네임스페이스 "http://www.w3.org/2001/XMLSchema-instance"에 대한 일반적인 접두사이다.)
XML 스키마 문서는 일반적으로 파일 확장자 ".xsd"를 갖는다. XSD에 대해 아직 고유한 인터넷 미디어 유형이 등록되지 않았으므로 RFC 3023에 따라 "application/xml" 또는 "text/xml"을 사용해야 한다.
4. 스키마 구성 요소
스키마 문서는 네임스페이스별로 구성된다. 명명된 모든 스키마 구성 요소는 대상 네임스페이스에 속하며, 대상 네임스페이스는 스키마 문서 전체의 속성이다. 스키마 문서는 동일한 네임스페이스에 대한 다른 스키마 문서를 ''포함''할 수 있으며, 다른 네임스페이스에 대한 스키마 문서를 ''가져올'' 수 있다.
인스턴스 문서가 스키마에 대해 유효성 검사를 수행할 때(이 과정을 ''평가''라고 함), 유효성 검사에 사용될 스키마는 유효성 검사 엔진에 매개변수로 제공되거나, `xsi:schemaLocation` 및 `xsi:noNamespaceSchemaLocation`이라는 두 개의 특수 속성을 사용하여 인스턴스 문서에서 직접 참조될 수 있다. ("xsi"는 네임스페이스 "http://www.w3.org/2001/XMLSchema-instance"에 대한 일반적인 접두사이다.)
XML 스키마 문서는 일반적으로 파일 확장자 ".xsd"를 갖는다. XSD에 대해 아직 고유한 인터넷 미디어 유형이 등록되지 않았으므로 RFC 3023에 따라 "application/xml" 또는 "text/xml"을 사용해야 한다.
스키마의 주요 구성 요소는 다음과 같다.4. 1. 요소 선언 (Element Declarations)
요소 선언은 요소의 속성을 정의한다. 여기에는 요소 이름과 대상 네임스페이스가 포함된다. 중요한 속성은 요소의 유형이며, 요소가 가질 수 있는 속성과 하위 요소를 제한한다. XSD 1.1에서 요소의 유형은 속성 값에 따라 조건부일 수 있다. 요소는 대체 그룹에 속할 수 있다. 요소 E가 요소 H의 대체 그룹에 있는 경우, 스키마가 H의 표시를 허용하는 곳이면 어디든지 E가 대신 나타날 수 있다. 요소는 무결성 제약 조건을 가질 수 있다. 특정 값이 요소에 루트를 둔 하위 트리 내에서 고유해야 함을 결정하는 고유성 제약 조건과 값이 다른 요소의 식별자와 일치해야 함을 결정하는 참조 제약 조건이 있다.
4. 2. 속성 선언 (Attribute Declarations)
속성 선언은 속성의 속성을 정의한다. 여기에는 속성 이름과 대상 네임스페이스가 포함된다. 속성의 타입은 속성이 가질 수 있는 값을 제한한다. 속성 선언에는 기본값을 지정하거나, 값을 고정할 수 있다.[1]
속성 선언은 기본값 또는 고정 값(이 경우 속성이 가질 수 있는 유일한 값)을 포함할 수 있다.[1]
4. 3. 타입 (Types)
XML 스키마에서 타입은 요소와 속성의 값에 대한 제약 조건을 정의한다.
간단한 타입(데이터 타입이라고도 함)은 요소나 속성에 나타날 수 있는 텍스트 값을 제한한다. 예를 들어, 속성이 유효한 날짜나 십진수만 가지도록 제한할 수 있다. XSD는 19가지 기본 자료형을 제공한다.[1]
기본 자료형 |
---|
이들 기본 자료형으로부터 세 가지 방법으로 새로운 자료형을 만들 수 있다.[1]
- 제한(Restriction): 허용되는 값의 집합을 줄인다.
- 목록(List): 값들의 연속을 허용한다.
- 통합(Union): 여러 타입들 중에서 값을 선택함을 허용한다.
XSD 명세 자체에 25가지 유도된 자료형이 정의되어 있으며, 사용자는 추가로 유도된 자료형을 정의할 수 있다. 자료형을 제한하는 방법으로 최솟값과 최댓값을 지정하거나, 정규 표현식을 사용하거나, 문자열의 길이를 제한하거나, 숫자의 자릿수를 제한할 수 있다. XSD 1.1에서는 XPath 2.0 식을 사용하여 임의의 제한을 규정할 수 있는 표명(assertion)이 추가되었다.[1]
복잡한 타입은 요소에 허용된 내용(content)을 기술하며, 요소와 텍스트 자식, 그리고 속성들을 포함한다. 복잡한 타입의 정의는 속성들의 집합과 내용 모형(content model)으로 구성된다. 내용 모형에는 여러 가지가 있다.[1]
- 요소 전용 내용(Element-only content): 텍스트(공백이나 자식 요소로 감싸진 텍스트는 제외)가 나타나지 않는다.
- 간단한 내용(Simple content): 텍스트는 허용되지만 자식 엘리먼트는 허용되지 않는다.
- 빈 내용(Empty content): 텍스트와 자식 엘리먼트 모두 허용되지 않는다.
- 섞여진 내용(Mixed content): 요소와 텍스트가 모두 나타날 수 있다.
복잡한 타입은 다른 복잡한 타입을 제한(restriction, 기반 형식이 허용하는 일부 요소/속성/값을 금지)하거나 확장(속성이나 요소의 등장을 추가로 허용)하여 유도될 수 있다.[1]
4. 4. 모델 그룹 (Model Groups) / 속성 그룹 (Attribute Groups)
모델 그룹과 속성 그룹 정의는 요소와 속성들의 재사용 가능한 그룹으로, 여러 타입 정의에서 참조되어 사용될 수 있는 매크로와 같은 역할을 한다.[1]4. 5. 기타 구성 요소
- '''주석(Annotations)'''
- '''표명(assertions)''' : XPath 2.0 식을 사용하여 제약 조건을 정의할 수 있다. (XSD 1.1)
- '''표기법(Notations)'''
- '''스키마 구성 요소(Schema Component)'''
5. PSVI (Post-Schema-Validation Infoset)
XML 스키마 기반 유효성 검사 후에는, 유효성 검사 중에 암묵적으로 존재했던 데이터 모델 측면에서 XML 문서의 구조와 내용을 표현하는 것이 가능해진다. XML 스키마 데이터 모델에는 다음이 포함된다.
- 어휘 (요소 및 속성 이름)
- 내용 모델 (관계 및 구조)
- 데이터 유형
이러한 정보의 모음을 PSVI(Post-Schema-Validation Infoset, 스키마 유효성 검증 후 정보 집합)라고 한다. PSVI는 유효한 XML 문서에 그 "타입"을 부여하고, 객체 지향 프로그래밍 패러다임을 사용하여 문서를 객체로 취급하는 것을 용이하게 한다.[1]
6. XML 스키마의 활용
XML 스키마는 XML 문서를 공식적으로 설명하기 위해 정의되지만, 단순한 유효성 검사를 넘어 여러 용도로 사용될 수 있다.
6. 1. XML 문서 유효성 검증 (Validation)
XML 문서를 어떤 스키마에 대하여 유효성 검증(assessment)할 때, 유효성 검증 엔진에 스키마를 직접 주거나, 인스턴스 문서에서 참조할 수 있다. 인스턴스 문서에서는 `xsi:schemaLocation`과 `xsi:noNamespaceSchemaLocation`이라는 두 가지 특별한 속성(attribute)을 사용한다. 여기서 'xsi'는 "http://www.w3.org/2001/XMLSchema-instance" 네임스페이스를 가리키는 접두어로 쓰인다.6. 2. 코드 생성 (Code Generation)
XML 데이터 바인딩을 통해 XML 문서를 프로그래밍 언어의 객체로 표현하는 코드를 생성할 수 있다. 이 코드를 사용하면 XML 문서의 내용을 프로그래밍 환경 내에서 객체로 취급할 수 있다.[1]6. 3. XML 문서 구조 문서화
XML 스키마는 XML 문서를 설명하기 위해 사용된다. XML 스키마는 단순한 XML 스키마 확인을 넘어서 다른 용도로도 사용될 수 있다.XML 스키마는 XML 파일 구조에 대한 문서를 만드는 데 사용될 수 있는데, 특히 작성자가 주석 요소를 사용했을 때 유용하다. 문서 생성에 대한 표준은 없지만, Xs3p 스타일시트와 같은 여러 도구를 사용하여 HTML 및 인쇄물을 생성할 수 있다.[1]
7. 비판
XML 스키마(XSD)는 널리 채택되었지만, 다른 W3C 권고안보다 더 많은 비판을 받았다. 주요 비판점은 다음과 같다.
- 복잡성: 사양이 매우 복잡하고 방대하여 비전문가가 이해하기 어렵다. W3C 권고안 자체는 수백 페이지에 달하는 전문적인 언어로 작성되어 읽기 어렵다. 대부분의 사용자는 [http://www.w3.org/TR/xmlschema-0/ W3Cs XML 스키마 프라이머]를 통해 이해하는 것이 더 쉽다고 생각한다.[6][7][8][9]
- 형식적 명세 부족: 정확한 수학적/형식적 명세가 부족하여 스키마에 대한 추론이 어렵다. 예를 들어, 스키마 수정이 하위 호환성을 갖는지 증명하기 어렵다.[6][7][8][9]
- 표현력의 한계:
- 정렬되지 않은 내용(Unordered Content)에 대한 지원이 약하다.[6][7][8][9]
- 특정 루트 요소를 요구할 수 없다.
- 혼합 내용(Mixed Content)에서 텍스트를 제한할 수 없다.
- 내용 및 속성 선언은 속성 또는 요소 컨텍스트에 종속될 수 없다.
- 100% 자체 설명적이지 않다.
- 기본값은 선언과 별도로 지정할 수 없다.
- 기술적 문제:
- 네임스페이스를 기술적으로 준수하지만, 네임스페이스 정신을 따르지 않는 것처럼 보인다.[6][7][8][9]
- XSD 1.0은 동시 발생 제약(Co-occurrence Constraints)을 지원하지 않았으나, XSD 1.1에서 수정되었다.[6][7][8][9]
- 제공되는 XSD 데이터 형식 집합이 임의적이다.[10]
- 유효성 검사와 증강(유형 정보 및 기본값 추가) 작업이 분리되어야 한다.[6][7][8][9]
8. 버전 1.1
XSD 1.1은 [http://www.w3.org/News/2012#entry-9412 2012년 4월]에 W3C 권고안이 되었으며, 이는 승인된 W3C 규격임을 의미한다.
XSD 1.1의 주요 새로운 기능은 다음과 같다.
- XPath 2.0 표현식을 통해 문서 내용에 대한 단언을 정의하는 기능 (Schematron에서 차용한 아이디어).
- 요소의 속성 값에 따라 해당 요소가 검증될 유형을 선택하는 기능("조건부 유형 할당").
- 내용 모델의 명시적 요소가 모델에서 허용되는 와일드카드와 일치해서는 안 된다는 규칙 완화.
- 스키마의 모든 유형에 적용되어 모두 동일한 확장성 정책을 구현하는 와일드카드(요소 및 속성 모두에 대해)를 지정하는 기능.
제안된 권고안 초안까지, XSD 1.1은 새로운 숫자 데이터 유형인 precisionDecimal의 추가도 제안했으나, 이는 논란이 되었고 개발의 후반 단계에서 규격에서 삭제되었다.
참조
[1]
웹사이트
Definition XSD (XML Schema Definition)
http://searchsoa.tec[...]
TechTarget
2014-06-10
[2]
웹사이트
XML and Semantic Web W3C Standards Timeline
http://www.dblab.ntu[...]
2012-02-04
[3]
웹사이트
Schema - W3C
http://www.w3.org/st[...]
[4]
웹사이트
W3C XML Schema Definition Language (XSD) 1.1 Part 1: Structures
http://www.w3.org/TR[...]
[5]
웹사이트
Removal of XDR Schema Support in MSXML 6.0
http://msdn.microsof[...]
2010-09-19
[6]
웹사이트
James Clark summary of XML Schema criticisms, and promotion of RELAX NG as an alternative
https://web.archive.[...]
[7]
웹사이트
Problems with XML Schema
http://cs.au.dk/~amo[...]
Anders Møller and Michael I. Schwartzbach
[8]
웹사이트
Rick Jelliffe critique in May 2009
https://web.archive.[...]
2009-05
[9]
간행물
Draft White Paper on CAM v1.1 and XSD Schema V1.1 Insights
http://www.oasis-ope[...]
2008-09-01
[10]
블로그
More on XML class warfare - O'Reilly ONLamp Blog
http://archive.oreil[...]
[11]
웹인용
XML and Semantic Web W3C Standards Timeline
https://web.archive.[...]
2013-09-27
[12]
웹사이트
Schema - W3C
http://www.w3.org/st[...]
[13]
웹사이트
W3C XML Schema Definition Language (XSD) 1.1 Part 1: Structures
http://www.w3.org/TR[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com